Skip to content

走马观花的学习下 Lua

在我们更深入地探索 ao 之前,让我们花点时间学习一下 Lua 的基础知识:你指挥 aos 进程的伙伴。

Lua 是一种简单的语言,没有什么惊喜。 如果你了解 Javascript,你会感觉它是一个简化、更纯粹的版本。 如果你从头开始学习,它看起来像是一门小型语言,专注于重要的事情:使用合理的语法进行极简的计算。

在本节中,我们将在短短几分钟内介绍 Lua 的基础知识。 如果你已经了解 Lua,请直接跳到下一章

跳回到你的 aos 进程

出于本教程的目的,我们假设你已经完成了入门 指南。 如果没有,请先完成。

如果你注销了进程,你可以随时通过在命令行上运行 aos 来重新打开它,也可以选择使用 --wallet [location] 指定你的密钥文件。

基本 Lua 表达式

在本入门书的其余部分中,我们将快速浏览 Lua 的核心功能和语法。

边推进边尝试你的 aos 进程中的示例,如果你觉得很直观明了,则可以跳过它们。

  • 基本算术:尝试一些基本算术,例如 5 + 3。 处理后,你将看到结果 8+-*/^ 都按你的预期工作。 % 是 Lua 用于求模的符号。

  • 设置变量:输入 a = 10 并按 Enter 键。 这会将变量 a 设置为 10。按照惯例(语法上不强制),全局变量在 Lua 中以大写字母开头(例如 Handlers)。

  • 使用变量:现在输入 a * 2。 你将看到命令行上返回 20

  • 字符串连接:通过执行 "Hello, " .. ao.id 向自己说 Hello

尝试条件语句

  • If-Else:与大多数编程语言一样,Lua 使用 if-else 块来有条件地执行代码。

    在你的 aos 进程中,输入 .editor 并按 Enter 键。 这将在命令行界面中打开一个内联文本编辑器。

    lua
    aos_coolness = 9001
    if aos_coolness > 9000 then
        return "aos is coolness is over 9000!"
    else
        return "Oh. 🤷"
    end

    在终端上完成编辑后,在新行中输入 .done 并按 Enter 键。 这将终止编辑模式并将表达式提交给你的进程进行求值。

    结果,你会看到 aos is coolness is over 9000!

    Lua 中的 if 语句还可以有额外的 elseif [condition] then 块,更便于写多级条件执行语句。

Lua 中的循环

在 Lua 中循环代码有几种不同的方法。 以下是我们的最爱:

  • While 循环

    首先输入 n = 0 并按 Enter 键将计数器初始化为零。

    然后使用 .editor 再次打开内联编辑器。

    lua
    while n < 5 do
      n = n + 1
    end

    在新行中输入 .done 以执行 while 循环。 你只需运行 n 即可检查循环结果。

  • For 循环

    Lua 还可以在一组值之间执行 python 风格的 for 循环。 例如,使用 .editor 输入以下代码块:

    lua
    for m = 1, 100 do
      n = n + m
    end

    再次运行 n 来得到变量的新值。

上手函数

  • 定义一个函数

    再次使用 .editor ,提交以下行:

    lua
    function greeting(name)
      return "Hello, " .. name
    end

    一旦提交,aos 将返回 undefined,因为 Lua 中的函数(和变量)定义不返回值。

    Lua 还具有 匿名高阶 函数。 这些本质上允许你像使用普通数据一样使用函数本身 - 作为参数传递给其他函数等。以下示例定义了一个匿名函数,并且与上面的示例等效:

    lua
    greeting =
      function(name)
        return "Hello, " .. name
      end
  • 调用函数:使用 greeting("Earthling") 调用函数。 aos 将返回 "Hello, Earthling"

用表定义深层对象

表是Lua 唯一的复合数据结构。 它们将 映射到 ,但也可以像传统数组一样使用。

  • 创建一个简单的表:输入 ao_is = {"hyper", "parallel", "compute"} 来创建一个简单的表。
  • 访问表的元素:使用 ao_is[2] 访问元素。 aos 将返回 parallel。 注意:Lua 中的下标是从 1 开始的!
  • 统计表的元素:Lua 中表的大小是通过运算符 # 读取的。 例如,运行 #ao_is 将返回 3
  • 设置命名元素:输入 ao_is["cool"] = true 以向表中添加新的命名键。 命名元素也可以使用 . 运算符访问,例如 ao_is.cool

Lua 注意事项

aos 使用 Lua 是因为它是一种简单、明了的语言,大多数有经验的程序员都可以很快学会,而且由于它在 Roblox 等视频游戏中的使用,它也是一种越来越流行的首选编程语言。

尽管如此,该语言的一些问题很容易让新手 Lua 构建者犯错。 口味可能会有所不同,但以下是我们的 Lua wat 的详尽列表:

  • 记住: 表索引从 1 开始,而不是 0!
  • 记住: 不等于~= 表示,而不是 != 或类似的。
  • 记住: Lua 中的对象被称为 ,而不是它们更常见的名称。

继续前行

记住这些,你现在已经了解了使用 Lua 构建出色的去中心化进程所需的一切! 在下一章中,我们将开始使用 Lua 和 aos 构建并行进程。